home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / tex / cmsrc392.zip / ITALIG.MF < prev    next >
Text File  |  1992-03-30  |  9KB  |  199 lines

  1. % This file describes five italic ligatures that begin with `f'
  2. % and puts them in code positions \0013--\0017.
  3.  
  4. numeric itc; % modified italic correction on `f' and `ff'
  5. itc=(asc_height#-x_height#)*slant+.75u#;
  6.  
  7. ligtable "f": "i"=:oct"014", "f"=:oct"013", "l"=:oct"015",
  8.  "'" kern itc, "?" kern itc, "!" kern itc, ")" kern itc, "]" kern itc;
  9. ligtable oct"013": "i"=:oct"016", "l"=:oct"017",
  10.  "'" kern itc, "?" kern itc, "!" kern itc, ")" kern itc, "]" kern itc;
  11.  
  12. cmchar "Italic ligature ff";
  13. beginchar(oct"013",5u#+max(1.5u#,stem#)+max(3.5u#,2flare#)+2letter_fit#,
  14.  asc_height#,desc_depth#);
  15. italcorr asc_height#*slant+.75u#;
  16. adjust_fit(0,0); pickup fine.nib;
  17. z98-z88=z99-z89=z14-z4=z15-z5=(4.8u+2letter_fit,0);
  18. .5[x88,x99]=.5w-.1u; x89-x88=u; y98=h; y99=-d;
  19. numeric theta; theta=angle(z88-z89);
  20. pos0(flare,0); pos1(hair,0); pos2(vair,90);
  21. pos3(.5[hair,stem],180); pos4(stem,theta+90);
  22. pos5(stem,theta-90); pos6(.5[hair,stem],0);
  23. pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
  24. rt x1r=hround(.5w+1.25u); lft x8r=hround-.35u; x2=.5[x1,x4]; x7=.6[x8,x5];
  25. y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
  26. y4=.25[x_height,h]; y5=.5[-d,y4];
  27. z4=whatever[z88,z89]; z5=whatever[z88,z89];
  28. x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
  29. bulb(2,1,0); bulb(7,8,9);  % left bulbs
  30. filldraw stroke z2e{left}...z3e...{z89-z88}z4e;  % upper middle arc
  31. filldraw z4r--z5l--z5r--z4l--cycle;  % left stem
  32. filldraw stroke z5e{z89-z88}...z6e...{left}z7e;  % lower left arc
  33. pos10(flare,0); pos11(hair,0); pos12(vair,90);
  34. pos13(.5[hair,stem],180); pos14(stem,theta+90);
  35. pos15(stem,theta-90); pos16(.5[hair,stem],0);
  36. pos17(vair,-90); pos18(hair,-180); pos19(flare,-180);
  37. rt x11r=hround(w+.25u); lft x18r=hround(.5w-1.25u);
  38. x12=.6[x11,x14]; x17=.5[x18,x15];
  39. x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
  40. y0=y10; y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
  41. bulb(12,11,10); bulb(17,18,19);  % right bulbs
  42. filldraw stroke z12e{left}...z13e...{z99-z98}z14e;  % upper right arc
  43. filldraw z14r--z15l--z15r--z14l--cycle;  % right stem
  44. filldraw stroke z15e{z99-z98}...z16e...{left}z17e;  % lower middle arc
  45. pickup crisp.nib; pos20(bar,90); pos21(bar,90);
  46. top y20r=top y21r=x_height;
  47. lft x20=lft x4r-.5stem-u; rt x21=rt x14l+.5stem+1.5u;
  48. filldraw stroke z20e--z21e;  %  crossbar
  49. penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
  50.  20,21,88,89,98,99); endchar;
  51.  
  52. cmchar "Italic ligature fi";
  53. beginchar(oct"014",6.5u#+.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
  54.  +2letter_fit#,asc_height#,desc_depth#);
  55. italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
  56. adjust_fit(0,0); pickup fine.nib;
  57. .5[x88,x89]=.5(w-4u-2letter_fit); x89-x88=u; y88=h; y89=-d;
  58. numeric theta; theta=angle(z88-z89);
  59. pos0(flare,0); pos1(hair,0); pos2(vair,90);
  60. pos3(.5[hair,stem],180); pos4(stem,theta+90);
  61. pos5(stem,theta-90); pos6(.5[hair,stem],0);
  62. pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
  63. pos11(stem,0); rt x11r=hround(w-2.5u+.5stem);
  64. x12=x11; x14=w; hook_out(12,13,14);  % closing hook
  65. x1r=x11r; lft x8r=hround-.35u; x2=.5[x1,x4]; x7=.6[x8,x5];
  66. y9-.5flare=vround-.85d; bot y7r=-d-oo;
  67. y0+.5flare=vround(.85[x_height,h]); top y2r=h+oo;
  68. y4=.25[x_height,h]; y5=.5[-d,y4];
  69. z4=whatever[z88,z89]; z5=whatever[z88,z89];
  70. x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
  71. bulb(2,1,0); bulb(7,8,9);  % bulbs
  72. filldraw stroke z2e{left}...z3e...{z89-z88}z4e;  % upper arc
  73. filldraw z4r--z5l--z5r--z4l--cycle;  % left stem
  74. filldraw stroke z5e{z89-z88}...z6e...{left}z7e;  % lower arc
  75. top y11=x_height; filldraw stroke z11e--z12e;  % right stem
  76. pickup crisp.nib; pos20(bar,90); pos21(bar,90);
  77. top y20r=top y21r=x_height;
  78. lft x20=lft x4r-.5stem-u; x21=x11;
  79. filldraw stroke z20e--z21e;  %  crossbar
  80. penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,88,89); endchar;
  81.  
  82. cmchar "Italic ligature fl";
  83. beginchar(oct"015",7u#+.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
  84.  +2letter_fit#,asc_height#,desc_depth#);
  85. italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
  86. adjust_fit(0,0); pickup fine.nib;
  87. .5[x88,x89]=.5(w-4.5u-2letter_fit); x89-x88=u; y88=h; y89=-d;
  88. numeric theta; theta=angle(z88-z89);
  89. pos0(flare,0); pos1(hair,0); pos2(vair,90);
  90. pos3(.5[hair,stem],180); pos4(stem,theta+90);
  91. pos5(stem,theta-90); pos6(.5[hair,stem],0);
  92. pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
  93. pos11(stem,0); rt x11r=hround(w-2.5u+.5stem); rt x1r=lft x11l;
  94. x12=x11; x14=w; hook_out(12,13,14);  % closing hook
  95. lft x8r=hround-.35u; x2=.5[x1,x4]; x7=.6[x8,x5];
  96. y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
  97. y4=.25[x_height,h]; y5=.5[-d,y4];
  98. z4=whatever[z88,z89]; z5=whatever[z88,z89];
  99. x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
  100. bulb(2,1,0); bulb(7,8,9);  % bulbs
  101. filldraw stroke z2e{left}...z3e...{z89-z88}z4e;  % upper arc
  102. filldraw z4r--z5l--z5r--z4l--cycle;  % left stem
  103. filldraw stroke z5e{z89-z88}...z6e...{left}z7e;  % lower arc
  104. top y11=h; filldraw stroke z11e--z12e;  % right stem
  105. pickup crisp.nib; pos20(bar,90); pos21(bar,90);
  106. top y20r=top y21r=x_height;
  107. lft x20=lft x4r-.5stem-u; x21=x11;
  108. filldraw stroke z20e--z21e;  %  crossbar
  109. penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,88,89); endchar;
  110.  
  111. cmchar "Italic ligature ffi";
  112. beginchar(oct"016",11.75u#+.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
  113.  +4letter_fit#,asc_height#,desc_depth#);
  114. italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
  115. adjust_fit(0,0); pickup fine.nib;
  116. z98-z88=z99-z89=z14-z4=z15-z5=(5u+2letter_fit,0);
  117. numeric theta,mid_f;
  118. mid_f=.5[x88,x99]=.5(w-4.25u-2letter_fit); x89-x88=u;
  119. y98=h; y99=-d; theta=angle(z88-z89);
  120. pos21(stem,0); rt x21r=hround(w-2.5u+.5stem);
  121. x22=x21; x24=w; hook_out(22,23,24);  % closing hook
  122. pos0(flare,0); pos1(hair,0); pos2(vair,90);
  123. pos3(.5[hair,stem],180); pos4(stem,theta+90);
  124. pos5(stem,theta-90); pos6(.5[hair,stem],0);
  125. pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
  126. rt x1r=hround(mid_f+1.75u); lft x8r=hround-.35u;
  127. x2=.5[x1,x4]; x7=.6[x8,x5];
  128. y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
  129. y4=.25[x_height,h]; y5=.5[-d,y4];
  130. z4=whatever[z88,z89]; z5=whatever[z88,z89];
  131. x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
  132. bulb(2,1,0); bulb(7,8,9);  % left bulbs
  133. filldraw stroke z2e{left}...z3e...{z89-z88}z4e;  % upper middle arc
  134. filldraw z4r--z5l--z5r--z4l--cycle;  % left stem
  135. filldraw stroke z5e{z89-z88}...z6e...{left}z7e;  % lower left arc
  136. pos10(flare,0); pos11(hair,0); pos12(vair,90);
  137. pos13(.5[hair,stem],180); pos14(stem,theta+90);
  138. pos15(stem,theta-90); pos16(.5[hair,stem],0);
  139. pos17(vair,-90); pos18(hair,-180); pos19(flare,-180);
  140. x11r=x21r; lft x18r=hround(mid_f-1.25u); x12=.5[x11,x14]; x17=.5[x18,x15];
  141. x13=.8[x12+x14-x98,x98]; x16=.8[x17+x15-x99,x99];
  142. y10+.5flare=vround .85[x_height,h];
  143. y2=y12; y3=y13; y6=y16; y7=y17; y9=y19;
  144. bulb(12,11,10); bulb(17,18,19);  % right bulbs
  145. filldraw stroke z12e{left}...z13e...{z99-z98}z14e;  % upper right arc
  146. filldraw z14r--z15l--z15r--z14l--cycle;  % middle stem
  147. filldraw stroke z15e{z99-z98}...z16e...{left}z17e;  % lower middle arc
  148. top y21=x_height; filldraw stroke z21e--z22e;  % right stem
  149. pickup crisp.nib; pos30(bar,90); pos31(bar,90);
  150. top y30r=top y31r=x_height;
  151. lft x30=lft x4r-.5stem-u; x31=x21;
  152. filldraw stroke z30e--z31e;  %  crossbar
  153. penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
  154.  20,21,22,23,24,30,31,88,89,98,99); endchar;
  155.  
  156. cmchar "Italic ligature ffl";
  157. beginchar(oct"017",12u#+.5max(1.5u#,stem#)+.5max(3.5u#,2flare#)
  158.  +4letter_fit#,asc_height#,desc_depth#);
  159. italcorr max(asc_height#*slant+.5stem#-2u#,1/3x_height#*slant+.5hair#+.5u#);
  160. adjust_fit(0,0); pickup fine.nib;
  161. z98-z88=z99-z89=z14-z4=z15-z5=(5u+2letter_fit,0);
  162. numeric theta,mid_f;
  163. mid_f=.5[x88,x99]=.5(w-4.5u-2letter_fit); x89-x88=u;
  164. y98=h; y99=-d; theta=angle(z88-z89);
  165. pos21(stem,0); rt x21r=hround(w-2.5u+.5stem);
  166. x22=x21; x24=w; hook_out(22,23,24);  % closing hook
  167. pos0(flare,0); pos1(hair,0); pos2(vair,90);
  168. pos3(.5[hair,stem],180); pos4(stem,theta+90);
  169. pos5(stem,theta-90); pos6(.5[hair,stem],0);
  170. pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
  171. rt x1r=hround(mid_f+1.25u); lft x8r=hround-.35u;
  172. x2=.5[x1,x4]; x7=.6[x8,x5];
  173. y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
  174. y4=.25[x